package java_thinking.unit_21.Exercise;

import net.jcip.annotations.ThreadSafe;

/**
 * @Desc:   并发下DCL单例模式的问题
 *          1.加载模式：懒汉、饿汉
 *          2.并发可取的单例模式：延长初始化占位类模式
 *          3.主要解决了传统单例模式在读操作的时候不一定构造器已经完成构造并写回堆内存中的不确定性；
 * @author: cww
 * @DateTime: 2019-07-06 21:35
 */

public class Dcl {

}

/**
 * 线程安全的饿汉加载模式
 */
@ThreadSafe
class EagerDcl {
    private static Resource resource = new Resource();

    public static Resource getInstance() {
        return resource;
    }
}

/**
 * 线程安全的延长初始化占位模式
 */
@ThreadSafe
class DelayDcl {
    private static class Resource {
        private static Resource resource = new Resource();
    }

    public static Resource getInstance() {
        return Resource.resource;
    }
}
class Resource {

}